package com.wjm.api;

/**
 * Data:2022年07月05日
 * Author:wjm
 * Content: 泛型
 *
 *
 *  泛型的含义：泛指所有的数据类型，但是这个数据类型要到创建对象的时候才具体指定是哪一种数据类型
 *
 *  泛型的作用：可以在类和对象，接口中预先使用未知的类型
 *
 *  泛型是数据类型的一部分，将类名和泛型合并在一起可以看作是数据类型
 *
 *  结构：
 *         修饰词  class 类名 <代表泛型的变量>{}
 *
 *  注意:
 *        1）代表泛型的变量一般使用单个大写的英文字母
 *        2）泛型的具体类型是在创建对象的时候才被具体确定的
 *        3）泛型代表的是引用数据类型，如果要使用基本数据类型的话，
 *           需要在创建对象时候把泛型确定为基本数据类型的包装类
 *
 *  例子：
 *        这是一个使用泛型的类
 *              class ArrayList<E>{
 *                  public boolean add(E e);
 *
 *                  public E set(int index,E e){.....};
 *              }
 *
 *         创建这个类的对象(泛型的具体类型只有在创建对象的时候才确定)
 *               Collection<String> c = new ArrayList();
 *
 *          创建完对象后上面代码中的“泛型”(E)会被String类型代替
 *               class ArrayList<String>{
 *                  public boolean add(String e);
 *
 *                  public String set(int index,String e){.....};
 *              }
 *
 */
public class GenericDemo<WJM> {
    private WJM name;

    public WJM getName() {
        return name;
    }

    public void setName(WJM name) {
        this.name = name;
    }

    public static void main(String[] args) {
        //创建对象并确定泛型,这里确定为String类型
        GenericDemo<String> g1 = new GenericDemo();
        g1.setName("cwt");
        String str = g1.getName();
        System.out.println(str);

        //创建对象并确定泛型，这里确定为Integer类型
        GenericDemo<Integer> g2 = new GenericDemo();
        g2.setName(123);
        Integer i = g2.getName();
        System.out.println(i);
    }
}
